package com.settlement.system.model.entity.common;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.settlement.system.converter.DateFormatConvert;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 收退款-京东钱包流水
 *
 * @author Ximi
 * @since 2020-07-14
 */
@Data
@ExcelIgnoreUnannotated
@HeadStyle(fillBackgroundColor = 9, fillForegroundColor = 9)
@HeadRowHeight(value = 20)
@HeadFontStyle(fontHeightInPoints = 14)
public class TblJdWalletSerial extends BaseModel implements Serializable {


    /**
     * 日期
     */
    @ExcelProperty(value = "日期",converter = DateFormatConvert.class)
    @ApiModelProperty(value = "日期", required = true)
    @NotNull(message = "日期不能为空")
    @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8")
    private Date serialDate;

    /**
     * 店铺编码
     */
    @ExcelProperty(value = "店铺编码")
    @ApiModelProperty(value = "店铺编码", required = true)
    @NotNull(message = "店铺编码不能为空")
    private String shopNo;

    /**
     * 店铺名称
     */
    @ExcelProperty(value = "店铺名称")
    @ApiModelProperty(value = "店铺名称")
    private String shopName;

    /**
     * 账单日期
     */
    @ExcelProperty(value = "账单日期",converter = DateFormatConvert.class)
    @ApiModelProperty(value = "账单日期")
    @JsonFormat(pattern = "yyyy/MM/dd", timezone = "GMT+8")
    private Date billDate;

    /**
     * 流水号
     */
    @ExcelProperty(value = "流水号")
    @ApiModelProperty(value = "流水号", required = true)
    @NotNull(message = "流水号不能为空")
    private String serialNo;

    /**
     * 账户代码(二代会员号)
     */
    @ExcelProperty(value = "账户代码(二代会员号)")
    @ApiModelProperty(value = "账户代码(二代会员号)", required = true)
    @NotNull(message = "账户代码(二代会员号)不能为空")
    private String accountCode;

    /**
     * 账户名称
     */
    @ExcelProperty(value = "账户名称")
    @ApiModelProperty(value = "账户名称")
    private String accountName;

    /**
     * 币种
     */
    @ExcelProperty(value = "币种")
    @ApiModelProperty(value = "币种")
    private String coinType;

    /**
     * 收入金额(元)
     */
    @ExcelProperty(value = "收入金额(元)")
    @ApiModelProperty(value = "收入金额(元)")
    private BigDecimal receiveAmount;

    /**
     * 支出金额(元)
     */
    @ExcelProperty(value = "支出金额(元)")
    @ApiModelProperty(value = "支出金额(元)")
    private BigDecimal paymentAmount;

    /**
     * 账户余额(元)
     */
    @ExcelProperty(value = "账户余额(元)")
    @ApiModelProperty(value = "账户余额(元)", required = true)
    @NotNull(message = "账户余额(元)不能为空")
    private BigDecimal accountRemainAmount;

    /**
     * 交易类型
     */
    @ExcelProperty(value = "交易类型")
    @ApiModelProperty(value = "交易类型", required = true)
    @NotNull(message = "交易类型不能为空")
    private String exchangeType;

    /**
     * 费用类型
     */
    @ExcelProperty(value = "费用类型")
    @ApiModelProperty(value = "费用类型")
    private String costType;

    /**
     * 商户订单号
     */
    @ExcelProperty(value = "商户订单号")
    @ApiModelProperty(value = "商户订单号")
    private String merchantOrderNo;

    /**
     * 原商户订单号
     */
    @ExcelProperty(value = "原商户订单号")
    @ApiModelProperty(value = "原商户订单号")
    private String originMerchantOrderNo;

    /**
     * 交易备注
     */
    @ExcelProperty(value = "交易备注")
    @ApiModelProperty(value = "交易备注", required = true)
    @NotNull(message = "交易备注不能为空")
    private String exchangeRemark;

    /**
     * 对方户名
     */
    @ExcelProperty(value = "对方户名")
    @ApiModelProperty(value = "对方户名")
    private String oppositeAccountName;

    /**
     * 对方账户
     */
    @ExcelProperty(value = "对方账户")
    @ApiModelProperty(value = "对方账户")
    private String oppositeAccountNo;

    /**
     * 代付退票失败原因
     */
    @ExcelProperty(value = "代付退票失败原因")
    @ApiModelProperty(value = "代付退票失败原因")
    private String proxyPayFailedReason;

    /**
     * 记账请求号
     */
    @ExcelProperty(value = "记账请求号")
    @ApiModelProperty(value = "记账请求号")
    private String recordAccountApplyNo;

    /**
     * 交易订单号
     */
    @ExcelProperty(value = "交易订单号")
    @ApiModelProperty(value = "交易订单号")
    private String exchangeOrderNo;

    /**
     * 业务订单号
     */
    @ExcelProperty(value = "业务订单号")
    @ApiModelProperty(value = "业务订单号")
    private String businessOrderNo;

}
